package com.first.computerstore.controller;

import com.first.computerstore.entity.Product;
import com.first.computerstore.query.PageInfoQuery;
import com.first.computerstore.service.ProductService;
import com.first.computerstore.utils.JsonResult;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

/**
 * @version 1.0
 * @date 2023/6/28
 */
@RestController
@RequestMapping("/product")
public class ProductController extends BaseController{

    @Resource
    private ProductService productService;

    /**
     * 新到好货
     * @param pageInfoQuery
     * @return
     */
    @PostMapping("/newProductList")
    public JsonResult<PageInfo<Product>> queryByNewProductList(PageInfoQuery pageInfoQuery, HttpSession session) {
        //通过session作用域查询当前登录用户的id
        Integer uid=getUserIdFromSession(session);

        PageInfo<Product> lists = productService.queryByNewProductList(pageInfoQuery,uid);
        return new JsonResult<>(OK,lists);
    }

    /**
     * 首页导航栏的热销排行
     * @param pageNum
     * @param pageSize
     * @return
     */
    @GetMapping("hotProductList/{pageNum}/{pageSize}")
    public JsonResult<PageInfo<Product>> hotProductList(@PathVariable Integer pageNum, @PathVariable Integer pageSize,HttpSession session){
        //通过session作用域查询当前登录用户的id
        Integer uid=getUserIdFromSession(session);

        PageInfo<Product> pageInfo = productService.hotProductList(pageNum,pageSize,uid);
        return new JsonResult<>(OK, pageInfo);
    }

    /**
     * 商品详情
     * @param pid
     * @return
     */
    @GetMapping("{pid}")
    public JsonResult<Product> productShow(@PathVariable Integer pid){
        Product product = productService.queryProductShow(pid);
        return new JsonResult<>(OK,product);
    }
    /**
     * 根据用户输入的商品名称模糊查询商品列表：
     * 1、后台参数校验
     * 2、调用service层的方法查询pageInfo结果
     * 3、设置JsonResult对象
     * 4、返回
     *
     * @param pageNum 分页-当前页数
     * @param pageSize 分页-每页显示几条数据
     * @param title    用户输入的商品名称
     * @return
     */
    @GetMapping("/queryProductList")
    public JsonResult queryProductList(Integer pageNum, Integer pageSize, String title,HttpSession session){

        //通过session作用域查询当前登录用户的id
        Integer uid=getUserIdFromSession(session);

        JsonResult<PageInfo<Product>> result = new JsonResult<PageInfo<Product>>();
        /* 后台的参数校验 */
        if(null == pageNum || null == pageSize || null ==title || ""==title){
            //参数为空
            result.setStatus(300);
            result.setMessage("请输入商品名称呦！");
        }
            //参数不为空
        PageInfo<Product> productList = productService.queryProductList(pageNum,pageSize,title,uid);

            //成功查询到结果
        result.setStatus(200);
        result.setMessage("查询成功！");
        result.setData(productList);

        return  result;
    }


     /**
     *  分页查询新到好货，返回JsonResult
     * @return
     */
    @GetMapping("/newProduct")
    public JsonResult<List<Product>> queryNewProductByTime(){
        List<Product> product = productService.queryNewProductByTime();
        return new JsonResult<>(200,product);
    }

    /*热销排行*/
    @GetMapping("hotProduct")
    public JsonResult<List<Product>> queryhotProduct(){

        List<Product> product = productService.queryhotProduct();
        return new JsonResult<>(200,product);
    }



}
